# 调用缓存存储RDD
#coding:utf8
import time

from pyspark import SparkContext,SparkConf
from pyspark.storagelevel import StorageLevel

if __name__ == '__main__':
    conf = SparkConf().setAppName('test_persit').setMaster("local[*]")
    sc = SparkContext(conf=conf)

    rdd = sc.textFile('../data/input/words.txt')

    # 如果没有做缓存，这里对rdd2进行收集后就会被清除
    rdd_split = rdd.map(lambda x: x.split(' '))

    # 设置持久化地址
    sc.setCheckpointDir("hdfs://node1:8020/output/out2")
    # 持久化到磁盘中
    rdd_split.checkpoint()

    print(rdd_split.flatMap(lambda x:x).map(lambda x:(x,1)).reduceByKey(lambda x,y:x+y).collect())

    # 如果没有缓存，这里会从sc.textFile重新加载RDD
    print(rdd_split.flatMap(lambda x:x).map(lambda x:(x,1)).reduceByKey(lambda x,y:x+y).collect())

    time.sleep(49999)